* SOS * ;----------------------------------------------------------------- ; Reel Time Animated Two Dimension Vector's Graphics (RTATDVG) ; ------ ;by -ORIENS- from the coolest crew : »»» HAWK ««« ; ------ ;----------------------------------------------------------------- ; Le 06/11/91 ... 00:00 a 03:24 ; du 10/02/92 au 15/02/92 ; ; Objectif : Clipping... ; jmp st ORG $20000 ; Addressage Absolu LOAD $20000 ;----------------------------------------------------------------- ST: ;----------------------------------------------------------------- LEA Screens,A0 ; EFFACE Depuis ECRAN LEA $80000,A1 ; Jusqu'a la fin. CLEAR: CLR.W (A0)+ ; . CMP.L A0,A1 ; . BNE.S CLEAR ; . ;----------------------------------------------------------------- BSR SAVE_ALL ; FORBID & SAVE POINTEURS ;---------------------------------------------------------------- LEA $DFF000,A6 MOVE.W #$7FFF,$9A(A6) ; MOVE.W #$7FFF,$96(A6) ; Eteind tout les DMA MOVE.L #$308130C1,$8E(A6) ; MOVE.L #$003800D0,$92(A6) ; 40 de large MOVE.L #COPP,$DFF080 ; Pointe sur copper CLR.W $DFF088 ; Et l'initialize ;--------------------------------------------------------------- MOVE.L #IRQ,$6C MOVE.W #%1100000000010000,$9A(A6) MOVE.W #%1000011111110000,$96(A6) ;--------------------------------------------------------------- ATTEN: BTST #6,$BFE001 BNE ATTEN bsr wait_b BSR RESTORE_ALL RTS ;---------------------------------------------------------------- FLIP: DC.B 1 TRACE_OK:DC.B 1 EVEN TEMPO: DC.W 0 ;---------------------------------------------------------------- IRQ: MOVEM.L D0-d6/A0-A6,-(SP) MOVE.W $DFF01C,D0 AND.W $DFF01E,D0 BTST #4,D0 BEQ FINIRQ ; move.w #$fff,$dff180 Bsr Read_seq Bsr Rotation BSR DRAW_OBJET ; routine de trace de ligne BSR FLIP_IT NEG FLIP ; clr.w $dff180 MOVE.W #$10,$DFF09C ; Efface l'interruption FINIRQ: MOVEM.L (SP)+,d0-d6/A0-A6 RTE ;--------------------------------------------------------------- CURRENT_PLAN: DC.L BT1A ; PLAN DE TRAVAIL ;--------------------------------------------------------------- FLIP_IT:CMP.B #1,FLIP BNE OTHER MOVE.L #BT1A,CURRENT_PLAN LEA PT1,A0 ; ECRAN VISIBLE MOVE.L #BT1B,D0 MOVE.W D0,6(A0) SWAP D0 MOVE.W D0,2(A0) Swap d0 sub.l #[40*10]+2,d0 LEA PT2,A0 ; ECRAN VISIBLE MOVE.W D0,6(A0) SWAP D0 MOVE.W D0,2(A0) RTS OTHER: MOVE.L #BT1B,CURRENT_PLAN ; ECRAN TRAVAIL LEA PT1,A0 ; ECRAN VISIBLE MOVE.L #BT1A,D0 MOVE.W D0,6(A0) SWAP D0 MOVE.W D0,2(A0) Swap d0 sub.l #[40*10]+2,d0 LEA PT2,A0 ; ECRAN VISIBLE MOVE.W D0,6(A0) SWAP D0 MOVE.W D0,2(A0) RTS ;--------------------------------------------------------------- SAVE_ALL: MOVE.B #$87,$BFD100 ; STOP DRIVE MOVE.L $00000004,A6 JSR -132(A6) MOVE.L $6C,SAVEIRQ MOVE.W $DFF01C,SAVEINT OR.W #$C000,SAVEINT MOVE.W $DFF002,SAVEDMA OR.W #$8100,SAVEDMA RTS RESTORE_ALL: MOVE.L SAVEIRQ,$6C MOVE.W #$7FFF,$DFF09A MOVE.W SAVEINT,$DFF09A MOVE.W #$7FFF,$DFF096 MOVE.W SAVEDMA,$DFF096 MOVE.L $00000004,A6 LEA NAME,A1 MOVEQ #0,D0 JSR -552(A6) MOVE.L D0,A0 MOVE.L 38(A0),$DFF080 CLR.W $DFF088 MOVE.L D0,A1 JSR -414(A6) JSR -138(A6) RTS ;--------------------------------------------------------------- SAVEINT:DC.W 0 SAVEDMA:DC.W 0 SAVEIRQ:DC.L 0 NAME:DC.B "graphics.library",0 EVEN ;--------------------------------------------------------------- Read_seq: Cmp.w #0,tempo_seq bne no_new move.l Compt_sequence,a0 cmp.w #$ffff,(a0) bne ok_new move.l #sequence,compt_sequence move.l Compt_sequence,a0 ok_new: move.l (a0)+,Current_objet move.w (a0)+,tempo_seq move.w (a0)+,pal1+2 move.w (a0),pal1+6 move.w (a0)+,pal1+14 move.w (a0)+,pal1+10 move.w (a0)+,mode_sinus move.w (a0)+,angle_initial move.l a0,compt_sequence ; Sauve debut prochaine sequence no_new: sub.w #1,tempo_Seq Rts ;--------------------------------------------------------------- COMPT_SEQUENCE: DC.l Sequence Tempo_seq: dc.w 0 Sequence: dc.l ObjetX ; objet ; hawk arrive dc.w 10000 ; temps dc.w $5,$fab,$023 ; palette dc.w 3,180 ; mode 1=balance dc.l ObjetH ; objet ; hawk arrive dc.w 100 ; temps dc.w $5,$fab,$023 ; palette dc.w 0,180 ; mode 1=balance dc.l ObjetA ; objet dc.w 100 ; temps dc.w $5,$fab,$023 ; palette dc.w 0,180 ; mode 1=balance dc.l ObjetW ; objet dc.w 100 ; temps dc.w $5,$fab,$023 ; palette dc.w 0,180 ; mode 1=balance dc.l ObjetK ; objet dc.w 120 ; temps dc.w $5,$fab,$023 ; palette dc.w 0,0 ; mode 1=balance dc.l objet2 ; Boule dc.w 250 dc.w $606,$fab,$032 dc.w 3,0 ; 2=vitesse lente dc.l objetH ; Arrivee Hawk Relief dc.w 50 dc.w $fff,$fff,$000 dc.w 3,0 dc.l objetA dc.w 50 dc.w $fff,$fff,$000 dc.w 4,0 dc.l objetw dc.w 50 dc.w $fff,$fff,$000 dc.w 3,0 dc.l objetK dc.w 50 dc.w $fff,$fff,$000 dc.w 4,0 dc.l Objetcarre ; Objet carre dc.w 300 dc.w $00f,$0f0,$050 dc.w 1,0 dc.l objetH ; flash rapide dc.w 6 dc.w $fff,$000,$fff dc.w 0,180 dc.l objetA dc.w 6 dc.w $000,$fff,$000 dc.w 0,180 dc.l objetw dc.w 6 dc.w $fff,$000,$fff dc.w 0,180 dc.l objetK dc.w 6 dc.w $000,$fff,$000 dc.w 0,0 dc.l ObjetFeuj ; objet ; hawk arrive dc.w 200 ; temps dc.w $fab,$fab,$001 ; palette dc.w 4,0 ; mode 1=balance dc.l Objetan1 ; objet ; hawk arrive dc.w 100 ; temps dc.w $Fcd,$555,$001 ; palette dc.w 0,0 ; mode 1=balance dc.l Objetan2 ; objet ; hawk arrive dc.w 5 ; temps dc.w $fcd,$555,$001 ; palette dc.w 0,0 ; mode 1=balance dc.l Objetan3 ; objet ; hawk arrive dc.w 5 ; temps dc.w $fcd,$555,$001 ; palette dc.w 0,0 ; mode 1=balance dc.l Objetan4 ; objet ; hawk arrive dc.w 5 ; temps dc.w $fcd,$555,$001 ; palette dc.w 0,0 ; mode 1=balance dc.l Objetan5 ; objet ; hawk arrive dc.w 5 ; temps dc.w $fcd,$555,$001 ; palette dc.w 0,0 ; mode 1=balance dc.l Objetan6 ; dc.w 224 ; dc.w $fcd,$555,$001 ; dc.w 2,0 ; dc.l Objetan6 ; Fin mvt 1 dc.w 100 ; dc.w $fcd,$555,$001 ; dc.w 0,225 ; dc.l Objetan5 dc.w 5 dc.w $Fcd,$555,$001 dc.w 3,0 dc.l Objetan4 dc.w 5 dc.w $Fcd,$555,$001 dc.w 3,0 dc.l Objetan3 dc.w 5 dc.w $Fcd,$555,$001 dc.w 3,0 dc.l Objetan2 dc.w 5 dc.w $Fcd,$555,$001 dc.w 3,0 dc.l Objetan1 dc.w 5 dc.w $Fcd,$555,$001 dc.w 3,0 dc.l Objetan2 dc.w 5 dc.w $Fcd,$555,$001 dc.w 3,0 dc.l Objetan3 dc.w 5 dc.w $Fcd,$555,$001 dc.w 3,0 dc.l Objetan4 dc.w 5 dc.w $Fcd,$555,$001 dc.w 3,0 dc.l Objetan5 dc.w 5 dc.w $Fcd,$555,$001 dc.w 3,0 dc.l Objetan6 dc.w 5 dc.w $Fcd,$555,$001 dc.w 3,0 dc.l Objetan5 dc.w 5 dc.w $Fcd,$555,$001 dc.w 3,0 dc.l Objetan4 dc.w 5 dc.w $Fcd,$555,$001 dc.w 3,0 dc.l Objetan3 dc.w 5 dc.w $b89,$666,$222 dc.w 3,0 dc.l Objetan2 dc.w 5 dc.w $967,$222,$444 dc.w 3,0 dc.l Objetan1 dc.w 20 dc.w $666,$666,$666 dc.w 3,0 dc.l Objetcarre ; Objet carre dc.w 300 dc.w $666,$666,$000 dc.w 2,0 dc.l objetH ; flash rapide dc.w 6 dc.w $fff,$000,$fff dc.w 0,180 dc.l objetA dc.w 6 dc.w $000,$fff,$000 dc.w 0,180 dc.l objetw dc.w 6 dc.w $fff,$000,$fff dc.w 0,180 dc.l objetK dc.w 6 dc.w $000,$fff,$000 dc.w 0,0 dc.w $ffff ERASE_PLAN: BTST #14,$DFF002 BNE ERASE_PLAN MOVE.W #0,$DFF066 MOVE.L CURRENT_PLAN,a0 sub.l #[40*10],a0 move.l a0,$dff054 MOVE.W #$0100,$DFF040 MOVE.W #$0000,$DFF042 MOVE.L #$FFFFFFFFF,$DFF044 MOVE.W #266*64+20,$DFF058 WAIT_B: BTST #14,$DFF002 BNE WAIT_B RTS DRAW_OBJET: BSR ERASE_PLAN * * INIT * MOVE.W #$FFFF,$DFF044 MOVE.W #$FFFF,$DFF046 MOVE.W #$0028,$DFF060 MOVE.W #$0028,$DFF066 MOVE.W #$FFFF,$DFF072 MOVE.W #$8000,$DFF074 MOVE.L CURRENT_OBJET_dest,A0 Move.l a0,a1 DO_TRACE: CLR.L D0 CLR.L D1 CLR.L D2 CLR.L D3 CMP.W #$FFFF,(A0) ; TEST PROCHAINE COORD BNE DO_TRACE_1 ; ADD.L #6,A0 ; ; MOVE.L A0,CURRENT_OBJET ; SAUVE PROCHAIN OBJET BSR REMPLI ; Remplissage BRA END_TRACE ; Et RETOURNE DO_TRACE_1: CMP.W #$FFFE,4(A0) ; PASSE AU POINT SUIVANT BNE CONT_TRACE ; Et ferme figure MOVE.W (A0)+,D0 ; DEPART X MOVE.W (A0)+,D1 ; DEPART Y Move.w (A1),D2 ; 1er point X Move.w 2(A1),D3 ; 1er point Y Add.l #2,a0 ; Mot apres $fffe Move.l a0,a1 ; Sauve en 1er mot Bra Suite_Cont CONT_TRACE: MOVE.W (A0)+,D0 ; DEPART X MOVE.W (A0)+,D1 ; DEPART Y cmp.w #$ffff,(a0) bne normal MOVE.W (A1),D2 ; 1er point X MOVE.W 2(A1),D3 ; 1er point Y Bra suite_cont Normal: MOVE.W (A0),D2 ; ARRIVE X MOVE.W 2(A0),D3 ; ARRIVE Y Suite_cont BSR DRAWBLIT_FILL ; ROUTINE DE TRACAGE bra do_trace END_TRACE: RTS ;------------------------------- ; ROUTINE DE REMPLISSAGE BLITTER ;------------------------------- ;PART DU BAS DE L'ECRAN DONC IL FAUT AJOUTER LA TAILLE DE L'ECRAN Rempli: Bsr wait_b Move.l Current_Plan,A2 ; Ecran a remplir Add.l #[40*256]-2,A2 ; -2 pour un bon remplissage Move.l A2,$DFF054 Move.l A2,$DFF050 Move.l #-1,$Dff044 Move.w #$09f0,$Dff040 Move.w #$0012,$Dff042 Clr.w $Dff066 ; Modulo a 0 Clr.w $Dff064 ; Modulo a 0 Move.w #266*64+20,$Dff058 ; TAILLE D'UN ECRAN Rts ******************************************** ; ROUTINE DE TRACE DE LIGNE POUR REMPLISSAGE ******************************************** ; LINEDRAW ROUTINE FOR USE WITH FILLING: ; Preload: d0=X1 d1=Y1 d2=X2 d3=Y2 d5=Screenwidth ;a0=address a6=$dff000 ; $dff060=Screenwidth (word) $dff072=-$8000 (longword) $dff044=-1 (longword) drawblit_fill: movem.l d0-d5/a0/a5,-(a7) lea CUSTOM,a5 bsr wait_B move.w #40,d5 move.w d5,BLTCMOD(a5) move.l #-$8000,BLTBDAT(a5) move.l #-1,BLTAFWM(a5) MOVE.L CURRENT_PLAN,a0 CMP.W D0,D2 BGT.S swap_point EXG D2,D0 EXG D3,D1 swap_point: cmp.w d1,d3 bgt.L line1 exg d0,d2 exg d1,d3 line1: cmp.w d1,d3 beq out_fill ; horizontal move.w d1,d4 ; posy depart muls #40,d4 ; offset de depart move.w d0,d5 ; x de depart add.l a0,d4 ; d4 pointe sur la ligne de depart asr.w #3,d5 ; point/8 -> octets add.w d5,d4 ; d4 pointe sur le depart moveq #0,d5 sub.w d1,d3 ; deltay sub.w d0,d2 ; deltax bpl.s line2 moveq #1,d5 neg.w d2 line2: move.w d3,d1 ; d1=d3=deltay add.w d1,d1 ; d1=2*deltay cmp.w d2,d1 ; dbhi d3,line3 line3: move.w d3,d1 sub.w d2,d1 ; deltax-deltay bpl.s line4 exg d2,d3 line4: addx.w d5,d5 add.w d2,d2 ; 2*deltax move.w d2,d1 sub.w d3,d2 addx.w d5,d5 and.w #15,d0 ror.w #4,d0 or.w #$a4a,d0 waitblt:btst #6,DMACONR(a5) bne.s waitblt move.w d2,BLTAPTL(a5) sub.w d3,d2 lsl.w #6,d3 addq.w #2,d3 move.w d0,BLTCON0(a5) move.b oct(PC,d5.w),BLTCON1+1(a5) move.l d4,BLTCPTH(a5) move.l d4,BLTDPTH(a5) movem.w d1/d2,BLTBMOD(a5) move.w d3,BLTSIZE(a5) out_line: out_fill: movem.l (a7)+,d0-d5/a0/a5 rts oct: dc.l $3431353,$b4b1757 ft_octs: dc.b %0011011,%0000111,%0001111,%0011111 dc.b %0010111,%0001011,%0000011,%0010011 ;---------------------------------- ; ROUTINE DE ROTATION A 2 Francs 50 ;---------------------------------- alpha: dc.w 0 Compt_alpha: dc.w 0 mode_sinus: dc.w 0 ; 1 ou 2 angle_initial: dc.w 0 Rotation: ;[a 2 francs 50] clr.l d0 cmp.w #1,mode_sinus bne no_1 move.w compt_alpha,d0 ; Mode balance lea sinus,a0 move.w (a0,d0.w),d0 ; en d0 angle add.w #2,compt_alpha ; +2 table cmp.w #$ffff,d0 ; fin table ? bne suite_sinus clr.w compt_alpha bra rotation no_1: cmp.w #2,mode_sinus ; rotation vitesse 1 bne no_2 add.w #1,alpha move.w alpha,d0 bra suite_sinus no_2: cmp.w #3,mode_sinus ; rotation vitesse 4 bne no_3 add.w #4,alpha move.w alpha,d0 bra suite_sinus no_3: cmp.w #4,mode_sinus ; rotation vitesse -6 bne no_4 sub.w #6,alpha move.w alpha,d0 bra suite_sinus no_4: move.w angle_initial,d0 suite_sinus: move.w d0,alpha cmp.w #359,alpha ; alpha valide ? bmi no_plus1 sub.w #359,alpha no_plus1: cmp.w #0,alpha bpl no_moins1 add.w #359,alpha no_moins1: Clr.l d0 Clr.l d1 Clr.l d2 Move.l Current_objet,a0 Move.l Current_objet_dest,a1 Lea costable,a2 Lea sintable,a3 Rotation_Boucle: Cmp.w #$ffff,(a0) Beq End_Rotation Cmp.w #$fffe,(a0) Bne suite_rotation1 Move.w #$fffe,(a1)+ Add.l #2,a0 Bra rotation_boucle Suite_Rotation1: Move.w (a0),d0 Add.w alpha,d0 Cmp.w #359,d0 ; angle obtenu valide ? Bmi No_Plus Sub.w #359,d0 No_Plus: cmp.w #0,d0 bpl no_moins add.w #359,d0 no_moins: lsl #1,d0 ; table en mot move.w (a2,d0.w),d2 move.w 2(a0),d3 muls d2,d3 ; dist*cos divs #128,d3 ; /128 add.w centre,d3 clr.l d4 move.w d3,d4 ; d4=X move.w (a3,d0.w),d2 clr.l d3 move.w 2(a0),d3 muls d2,d3 ; dist*cos divs #128,d3 ; /128 add.w centre+2,d3 bsr Clip_it ; d4=x y=d3 add.l #4,a0 bra Rotation_boucle end_rotation: Move.w #$ffff,(a1) ; Ecrit fin de l'objet RTs Centre: dc.w 160,128 sintable: dcb.b 720 costable: dcb.b 720 >extern "df1:s_rtatdvg/sources/datasin",sintable Xm=319 Ym=256 Clip_it: move.w d4,point_avantsauve move.w d3,point_avantsauve+2 Movem.l d0-d2/a0-a2,-(sp) clr.l retour_point movem.l blank,d0-d2 move.w d4,d0 move.w d3,d1 Bsr valide tst.l Clip_bilan bne clip_oblige cmp.w #1,clip_ok beq no_clip move.l clip_bilansauve,clip_bilan move.l #4,Retour_point move.w #1,clip_ok bra clip_suite ; fabrique un point manquant Clip_oblige: move.w #-1,clip_ok clip_suite: Bsr clip move.w d0,d4 move.w d1,d3 no_clip: Movem.l (sp)+,d0-d2/a0-a2 move.w d4,(a1)+ ; pose dans table de construction move.w d3,(a1)+ move.w point_avantsauve,point_avant move.w point_avantsauve+2,point_avant+2 move.l clip_bilan,clip_bilansauve sub.l retour_point,a0 Rts ;------------------------------------ Retour_point: dc.l 0 ;------------------------------------ ; Point valide dans ecran ? ......... ;------------------------------------ Valide: Clr.l clip_bilan Cmp.w #0,d0 ; X < 0 ? Bpl no_x_minus Move.b #1,clip_bilan No_x_minus: Cmp.w #Xm,d0 ; X > 320 ? Bmi no_x_max Move.b #1,clip_bilan+1 No_x_max: Cmp.w #0,d1 ; Y < 0 ? Bpl no_y_minus Move.b #1,clip_bilan+2 No_y_minus: Cmp.w #Ym,d1 ; Y > 256 ? Bmi no_y_max Move.b #1,clip_bilan+3 No_y_max:Rts ;------------------------------------------------------------------- Clip_ok: dc.w 1 Point_avant: dc.w 0,0 ; sauvegarde du dernier point Point_avantsauve: dc.w 0,0 ; sauvegarde du dernier point Clip_bilan: dc.l 0 ; bilan des test clipping Clip_bilansauve: dc.l 0 ; bilan des test clipping Blank: blk.l 6,0 ; vide ;------------------------------------------------------------------- Clip: move.w d0,d2 move.w d1,d3 move.w d0,d4 move.w d1,d5 ;----------------------------------------- C_gauche: Tst.b Clip_Bilan Beq No_x_Upperflow lea point_avant,a0 ; Clip sur la gauche X=0 Sub.w (a0),d2 Sub.w 2(a0),d3 muls (a0),d3 ; divs d2,d3 ;d2 neg d3 add.w 2(a0),d3 Cmp.w #0,d3 Bmi c_haut Cmp.w #Ym,d3 Bpl c_bas ; move.w d0,point_avant ; move.w d1,point_avant+2 movem.l blank,d0-d1 move.w d3,d1 ; Y Rts ;----------------------------------------- no_x_Upperflow: Tst.b Clip_Bilan+2 ; Y < 0 Beq No_y_Upperflow C_haut: move.w d4,d0 move.w d5,d1 lea point_avant,a0 Sub.w 2(a0),d3 Sub.w (a0),d2 muls d1,d2 divs d3,d2 Neg d2 Add.w d0,d2 ; move.w d0,point_avant ; move.w d1,point_avant+2 movem.l blank,d0-d1 move.w d2,d0 ; X Rts ;----------------------------------------- No_y_Upperflow: Tst.b Clip_Bilan+1 ; X > 320 Beq No_x_Overflow C_Droite: lea point_avant,a0 Sub.w 2(a0),d3 Sub.w (a0),d2 move.w d0,d4 move.w d1,d5 Neg d0 add.w #Xm,d0 muls d3,d0 divs d2,d0 add.w d1,d0 Cmp.w #0,d0 Bmi c_haut Cmp.w #Ym,d0 Bpl c_bas ; move.w d4,point_avant ; move.w d5,point_avant+2 clr.l d1 move.w d0,d1 ; Y move.l #Xm,d0 Rts ;----------------------------------------- No_x_overflow: Tst.b Clip_Bilan+3 ; Y > 256 Beq No_y_Overflow C_Bas: move.w d4,d0 move.w d5,d1 lea point_avant,a0 Sub.w 2(a0),d3 Sub.w (a0),d2 ; move.w d0,point_avant ; move.w d1,point_avant+2 Neg d1 add.w #Ym,d1 muls d2,d1 divs d3,d1 add.w d0,d1 clr.l d0 move.w d1,d0 ; X move.l #Ym,d1 Rts ;----------------------------------------- No_y_overflow: Rts COPP: DC.L $01000200,$00960020 Pal1: DC.L $01800006 DC.L $01820fac dc.l $01840000 dc.l $01860fac DC.L $2801FFFE,$01002200 PT1: DC.L $00E00004,$00E25000 PT2: DC.L $00E40004,$00E64e6e DC.L $009C8010,$FFFFFFFE ; END COPPER ;--------------------------------------------------------------- Current_objet: Dc.l ObjetH Current_objet_Dest: Dc.l OBJETsauve1 ;--------------------------------------------------------------- ; 0 ----->> 320 ; | ;256 ;--------------------------------------------------------------- ObjetX: dc.w 0,100 dc.w 90,200 dc.w 180,100 dc.w 270,150 dc.w $ffff Objetsauve: dc.w 70,40 ; forme bizare dc.w 240,45 dc.w 250,216 dc.w 70,210 dc.w $fffe dc.w 95,60 ; creux interieur dc.w 230,65 dc.w 210,196 dc.w 90,190 dc.w $fffe dc.w 150,120 ; petit triangle dc.w 150,136 dc.w 170,128 dc.w $ffff ;--------------------------------------------------------------- Objet2: ; Carre tout simple dc.w 0,128 dc.w 10,128 dc.w 20,128 dc.w 30,128 dc.w 40,128 dc.w 50,128 dc.w 60,128 dc.w 70,128 dc.w 80,128 dc.w 90,128 dc.w 100,128 dc.w 110,128 dc.w 120,128 dc.w 130,128 dc.w 140,128 dc.w 150,128 dc.w 160,128 dc.w 170,128 dc.w 180,128 dc.w 190,128 dc.w 200,128 dc.w 210,128 dc.w 220,128 dc.w 230,128 dc.w 240,128 dc.w 250,128 dc.w 260,128 dc.w 270,128 dc.w $fffe dc.w 0,64 dc.w 15,64 dc.w 30,64 dc.w 45,64 dc.w 60,64 dc.w 75,64 dc.w 90,64 dc.w 105,64 dc.w 120,64 dc.w 135,64 dc.w 150,64 dc.w 165,64 dc.w 180,64 dc.w 195,64 dc.w 210,64 dc.w 225,64 dc.w 240,64 dc.w 255,64 dc.w 270,64 ; dc.w 285,64 ; dc.w 300,64 ; dc.w 315,64 ; dc.w 330,64 ; dc.w 345,64 dc.w $ffff ;--------------------------------------------------------------- ObjetH: dc.w 300,128 dc.w 60,128 dc.w 88,96 dc.w 80,30 dc.w 90,30 dc.w 100,30 dc.w 92,96 dc.w 120,128 dc.w 60+180,128 dc.w 88+180,96 dc.w 80+180,30 dc.w 270,30 dc.w 280,30 dc.w 272,96 dc.w $ffff ;--------------------------------------------------------------- Objetcarre: dc.w 0,145 dc.w 90,145 dc.w 180,145 dc.w 270,145 dc.w $fffe dc.w 45,70 dc.w 55,70 dc.w 65,70 dc.w 75,70 dc.w 85,70 dc.w 95,70 dc.w 105,70 dc.w 115,70 dc.w 125,70 dc.w 135,70 dc.w 270,120 dc.w $ffff ;--------------------------------------------------------------- ObjetA: dc.w 90,145 dc.w 330,130 dc.w 300,110 dc.w 315,40 dc.w 225,40 dc.w 240,110 dc.w 210,130 dc.w $fffe dc.w 30,20 dc.w 150,20 dc.w 90,60 dc.w $ffff ;--------------------------------------------------------------- ObjetW: dc.w 135,145 dc.w 110,20 dc.w 90,40 dc.w 70,20 dc.w 45,145 dc.w 10,101 dc.w 280,100 dc.w 270,50 dc.w 260,100 dc.w 170,101 dc.w $ffff ;--------------------------------------------------------------- ObjetK: dc.w 135,140 dc.w 225,140 dc.w 270,100 dc.w 270,50 dc.w 315,140 dc.w 350,140 dc.w 0,60 dc.w 45,140 dc.w 80,140 dc.w 90,50 dc.w 90,140 dc.w $ffff ;--------------------------------------------------------------- ObjetFeuj: dc.w 150,120 dc.w 270,120 dc.w 30,120 dc.w $fffe dc.w 90,120 dc.w 210,120 dc.w 330,120 dc.w $fffe dc.w 0,50 dc.w 90,50 dc.w 180,50 dc.w 270,50 dc.w $fffe dc.w 45,20 dc.w 135,20 dc.w 225,20 dc.w 315,20 dc.w $ffff ;--------------------------------------------------------------- ObjetAn1: dc.w 0,100 dc.w 10,100 dc.w 20,100 dc.w 30,100 dc.w 40,100 dc.w 50,100 dc.w 60,100 dc.w 70,100 dc.w 80,100 dc.w 90,100 dc.w 225,140 dc.w $ffff ObjetAn2: dc.w 0,105 dc.w 10,95 dc.w 20,105 dc.w 30,95 dc.w 40,105 dc.w 50,95 dc.w 60,105 dc.w 70,95 dc.w 80,105 dc.w 90,95 dc.w 225,140 dc.w $ffff ObjetAn3: dc.w 0,110 dc.w 10,90 dc.w 20,110 dc.w 30,90 dc.w 40,110 dc.w 50,90 dc.w 60,110 dc.w 70,90 dc.w 80,110 dc.w 90,90 dc.w 225,140 dc.w $ffff ObjetAn4: dc.w 0,115 dc.w 10,85 dc.w 20,115 dc.w 30,85 dc.w 40,115 dc.w 50,85 dc.w 60,115 dc.w 70,85 dc.w 80,115 dc.w 90,85 dc.w 225,140 dc.w $ffff ObjetAn5: dc.w 0,120 dc.w 10,80 dc.w 20,120 dc.w 30,80 dc.w 40,120 dc.w 50,80 dc.w 60,120 dc.w 70,80 dc.w 80,120 dc.w 90,80 dc.w 225,140 dc.w $ffff ObjetAn6: dc.w 0,125 dc.w 10,75 dc.w 20,125 dc.w 30,75 dc.w 40,125 dc.w 50,75 dc.w 60,125 dc.w 70,75 dc.w 80,125 dc.w 90,75 dc.w 225,140 dc.w $ffff objetblob1: dc.w 0,100 dc.w 10,190 dc.w 20,100 dc.w 30,190 dc.w 40,100 dc.w 50,200 dc.w 60,100 dc.w 70,200 dc.w 80,100 dc.w 90,200 dc.w 100,100 dc.w 110,200 dc.w 120,100 dc.w 180,250 dc.w 210,100 dc.w 270,240 dc.w $ffff Objetsauve1: blk.b 3000,0 mt_data: blk.b 70000,0 End_Data: Dc.w $ffff ; securite de table objet * END * COPRBASE=$dff000 CUSTOM=COPRBASE DMACONR=2 JOY0DAT=$a JOY1DAT=$c BLTDDAT=$76 BLTADAT=$74 BLTBDAT=$72 BLTCDAT=$70 BLTAFWM=$44 BLTALWM=$46 BLTAMOD=$64 BLTBMOD=$62 BLTCMOD=$60 BLTDMOD=$66 BLTCON0=$40 BLTCON1=$42 BLTSIZE=$58 BLTAPTH=$50 BLTAPTL=$52 BLTBPTH=$4c BLTCPTH=$48 BLTDPTH=$54 COP1LCH=$80 COPJMP1=$88 ;--------------------------------------------------------------- BT1A=$45000 ; Addresses plan BT1B=$48000 Screens=bt1a-[40*11] ;--------------------------------------------------------------- Sinus: DC.W 187,194,202,209,216,223,230,237,243,250,257,263,269,276 DC.W 282,288,293,299,304,309,314,319,323,327,331,335,339,342 DC.W 345,348,350,352,354,356,357,358,359,360,360,360,360,359 DC.W 358,357,355,354,351,349,347,344,341,337,334,330,326,321 DC.W 317,312,307,302,296,291,285,279,273,267,260,254,247,240 DC.W 233,227,220,213,205,198,191,184,177,169,162,155,148,141 DC.W 134,127,120,114,107,100,94,88,82,76,70,64,59,54,49,44 DC.W 39,35,31,27,23,20,17,14,11,9,7,5,3,2,1,0,0,0,0,1,1,3,4 DC.W 5,7,10,12,15,18,21,24,28,32,36,41,46,50,56,61,66,72,78 DC.W 84,90,96,103,109,116,123,130,137,144,151,158,165,172,179 dc.w $ffff